import Vue from 'vue';
import App from './App.vue';
import router from './router';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
// 导入样式字体图标
import './assets/fonts/iconfont.css';
import './assets/index.less';

// 导入axios
import axios from 'axios';
// 请求拦截器，只要发了请求，就会调用拦截器里面的回调函数，其中requst就是一个请求拦截器，通过拦截器里面的use方法就可以挂载一个回调函数，只要你向服务器发了一次请求，就会调用这个回调函数，在请求到达服务器之前会优先对这个请求做一下预处理，return 一个config 就代表这已经对这个请求做了一次处理，其中config就是一个请求对象。

// 导入富文本编辑器
import VueQuillEditor from 'vue-quill-editor';

// 导入富文本编辑器对应的必要的样式
// require styles
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';

axios.interceptors.request.use((config) => {
  // 为请求头设置Authorization设置token
  config.headers.Authorization = window.sessionStorage.getItem('token');
  // 这个是个固定的写法，结尾必须return 一个config
  return config;
});

// 配置请求根路径
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/';
// 将axios通过原型对象的方式挂载到$http上面，$http 为自定义的
Vue.prototype.$http = axios;

// 将axios通过原型对象的方式挂载到$Elementui上面，$Elementui为自定义的
Vue.prototype.$Elementui = ElementUI;
// 全局导入Elementui就不需要挂载，直接使用，this.$message.error 就可以调用方法
Vue.config.productionTip = false;

// 全局注册Elementui组件库
Vue.use(ElementUI);

// 全局注册这个富文本编辑器
Vue.use(VueQuillEditor);

// 定义一个全局的时间过滤器
Vue.filter('dateFormat', function (originVal) {
  const date = new Date(originVal);

  const y = date.getFullYear();
  // 利用隐式转换将数值转成字符串
  const m = (date.getMonth() + 1 + '').padStart(2, '0');
  const d = (date.getDate() + '').padStart(2, '0');

  const hh = (date.getHours() + '').padStart(2, '0');
  const mm = (date.getMinutes() + '').padStart(2, '0');
  const ss = (date.getSeconds() + '').padStart(2, '0');

  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
});

new Vue({
  router,
  render: (h) => h(App),
}).$mount('#app');
